home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
033a
/
bnu188b.zip
/
BNU.REV
< prev
next >
Wrap
Text File
|
1990-05-27
|
23KB
|
514 lines
-----------------------------------
Revision history since 1.70 release
-----------------------------------
--- v1.71ß 04 Nov 1989
- Fixed 'tabs' problem with 'fast' ANSI option
- Forced a single EOI on each call (experimental);
Note: this is a temporary 'kludge' for experimental
purposes, and means that IRQ's on the FIRST 8259A
(that is IRQ 0-7) are currently supported
- Forced additional loopback in ISR after servicing
stray THRE's (TX holding register empty) caused during
servicing of MSI's (modem status change) or received
characters. This should ensure absolutely that no
stray interrupts get lost while in the ISR.
--- v1.72ß 10 Nov 1989
- Minor changes to port detection routine to 'fix' BIOS data
area correctly for invalid/unknown port addresses
- Additions to status display: number of physical ports detected
during diagnostics and default FIFO trigger level
- Arrgh! Found some 'unfixed' code for the now variable 16550
FIFO sizes, RX/TX buffer purge was resetting the RX buffer to
the old 'hard coded' 8 byte level
- Fixed bug in error message display on the /Q option when FOSSIL
vector required recapture.
--- v1.73α 13 Nov 1989
- Changed to specific EOI in interrupt handler instead of non-
specific EOI,
- BNU now (again) supports the upper 8 interrupts on a 16 bit
bus, and sends a specific EOI to the master 8259A on IRQ 2
if an upper (IRQ 8-15) interrupt is used,
- Some redundant code has been eliminated from the ISR (saved a
few more clock cycles, anyway),
- BNU's internal CTS/RTS signal is now set on port init when CTS
is found low (previously it was left clear and not set until the
first MSI occured),
- BNU now uses INT 1cH vector for timer interrupt functions,
- The timer hook now re-enables interrupt processing and rearms
the timer interrupt before calling 'hooked' functions. As a
result, hooked functions are now more 'friendly' and forgiving
on communications - for example the diags module should work
better in all cases and interfere less (if at all) with comms,
- Added view of the FIFO register to the diagnostics panel: this reads
according to the current FIFO trigger value:
C1 16550AN or better installed
81 16550 (old series) installed
01 FIFO disabled or 16550 not installed
- BNU now aborts if no hardware COM ports are located
- Forced port 'autosense' routine to use resident driver's version
of port setup table (since it installs ok),
- Status call now includes some code to check the state of the
'transmitter' to ensure that transmission is not temporarily
blocked for some reason hopefully increasing TX turnaround.
* NOTE: BNUPORT from earlier versions is incompatible with releases
after 1.73α due to changes in EOI handling! Upgrade to BNUPORT
version 1.80 (distributed via usual channels).
--- v1.74α 18 Nov 1989
- Placed further transmitter state checks in character TX, TX no
wait and TX flush to increase TX turnaround and decrease chance
of a 'stuck' transmitter.
- Enabled a timeout delay before reboot using the carrier watchdog.
The new command line parameter (compatible with old) is:
BNU /W<port>+|-[,<ticks>]
Example, to enable carrier watchdog on port 1 (COM2) to reboot
approx 4 seconds after carrier loss, the following would be
executed:
BNU /W1+,72
The timeout value is expressed in "ticks", where each timer tick
is equal to approx 18.2 per second. A 1 minute delay requires
a delay factor of about 1100 ticks (there are approx 65520
ticks/hour).
- Stopped BNU "complaining" if a /P command line switch duplicated
the number of ports as previously set on install (saves having a
separate install line if only one command line is ever used in a
batch file).
--- v1.75α 25 Nov 1989
- Placed more transmitter state checks in character TX, TX no wait
and TX flush to increase TX turnaround and decrease chance of a
'stuck' transmitter.
- This version was distributed to specific sites only.
--- v1.76α 29 Nov 1989
- Internal test version only; testing TX state checking - eliminated
most of the new logic since the problem it was meant to solve ended
up being hardware related... :-(
--- v1.77ß 03 Dec 1989 ** Back to beta versions again!
- Improved transmitter logic handling in character IO functions
- Changed and improved method of FOSSIL controlled transmitter block
flag in FOSSIL function 10h - Opus (which uses this extensively)
should be much improved and transmitter interrupt handling more
efficient
- Found and squashed "the" bug introduced in 1.73α causing hanging
occasionally and memory allocation problems under PC-MOS/386 :-)
- Autodetect for the older 16550 (no AN) now installed; /Z2 will be
default for these machines unless a /Z switch is specified
- /Z with no digit now restores BNU to it's default autodetect FIFO
state
- Modified /Z1 to be now 16TX by 08RX to optimise for the older
style 16550 (this used to be BNU's default); this allows for
interrupt latency on the receive side (the usual requirement for
using the /Z switch) without sacrificing transmit buffer size!).
- Corrected a problem in port lock command line parsing, where the
specification of ,nps with the baud rate would not be effective
or would not set the port correctly
--- v1.78ß 16 Dec 1989
- Internal version only
- Solved problem with locking baud rates on anything but COM1; this
interferred with other communications software running on COM1,
such as mouse drivers, etc.
- Enabled switchable support for XOFF/ANY mode (any character
received unblocks an XOFF'ed transmitter instead of just XON),
the new command line switch is /X+ (or just /X) to enable XOFF/ANY
and /X- to use the default XOFF/XON protocol
- Added XOFF protocol setting to status display
- Closed stdout & stderr on install to prevent DOS allocating a
file handle on redirected stdout/stderr
--- v1.79ß 23 Dec 1989
- Fixed bug in setting baud rate on install, port was not being
immediately set if not COM1
- Forced watchdog to lower DTR prior reboot for both better
security and to prevent autoanswer modems from answering until
the application had fully restarted
- CHANGED /B SWITCH *** NOTICE *** /Bn old syntax is no longer
supported: BNU should now reboot correctly in all cases under
DESQview/386 and on most PC-compatible hardware. The new syntax
is now /Bn, where n = 0 is cold boot, n = 1 is warm boot
- /I* will now deinit ALL active communications ports
- Limited release to specifc sites to ensure specific problems
have been solved...
--- v1.79Γ 01 Jan 1990
- Modified uninstall routine to allow for TM's install process and
resident detection.
- Small change to reboot code to cope with PC-MOS/386 v3.0
- Added hook for "get counter" from task manager (mainly for
debugging), and modified diags window to indicate UART type in
upper byte of FIFO size
- Substantial modifications to port baud rate & parameters setting,
fixing "bug" in the baud rate returned in "fossil data" call 1bh.
This call will now return the ACTUAL baud rate/parameters (it
previously returned incorrect data).
- Small modifications to port init to force modem status change and
kick interrupts...
- Bios version of baud rate set no longer turns interrupts off, but
preserves their state
--- v1.79π 03 Jan 1990
- Changed some internals in the way locked baud rates work
- Corrected problem in .sys version when parsing command line
for a locked baud rate
- Significant cleanup of .SYS version interface and facilities
- removed /B switch (redundant) from .SYS version
- added basic funtional BNUHLP.COM (see notes below)
- added functional task manager driver for DESQview and PC-MOS/386
- added CTS signal low timeout to prevent blocked transmitter
states when a modem is in error. The default timeout is 10
seconds (ie if CTS from the modem stays low for more than 10
seconds, BNU will ignore this until the next modem status change).
--- v1.79Σ 04 Jan 1990 * Emergency bug fix *
- Fixed errors in new CTS signal recovery logic
--- v1.80α 07 Jan 1990
- Modified .SYS version / BNUHLP interraction
- BNUHLP now works in "non-verbose" mode when the /M- option has
been set when installed or via BNUHLP itself
- Fixed bug in BNUHLP not setting driver options correctly
- Modified /O switch to default to '+' (enable compatibility
mode) in .COM version and BNUHLP
--- v1.80α 09 Jan 1990
- Removed (hopefully) braindamage from the CTS timeout routine,
so now it should be more reliable and consistent
- Note that /Y<ticks> allows setting of this timeout (this has
been present, but 'undocumented' since adding this logic)
- Internal version only
--- v1.80ß 11 Jan 1990
- Support for flushing modem's transmit buffer on transmit purge
call by sending break signal for a specified period: the time
the break signal up is configurable (and this option is enabled)
using the /G<ticks> switch (typical setting is /G5 for approx
0.25 seconds). This seems to provide faster response to
'hotkeyed' applications
WARNING: You would be advised to test this carefully; it's use
will normally require adjustment for your modem's settings
to enable the feature to "purge modem buffer on receiving
break from DTE (your computer)".
THIS OPTION SHOULD ONLY BE USED WHERE YOUR MODEM HAS AN OPTION TO
PREVENT SENDING 'BREAK' TO THE REMOTE: CURRENTLY - SO FAR AS I AM
AWARE - ONLY HST'S OFFER THIS OPTION. MAKE SURE &Y0 IS ENABLED!
- CTS/RTS override strategy now sends a break if the /G option is
enabled to help the modem to recover from braindamage (use carefully)
- Added /G to BNU.COM BNUHLP.COM and BNU.SYS.
- Experimental version with limited release
---- v1.80Γ 15 Jan 1990
- Corrected reboot code (typo) causing code not to work
- Corrections to break signal logic
- Further modifications to reboot code: it should work far more
reliably now under DV/386 and PC-MOS/386.
- Found suspicious error in maintenance of an internal status flag
- Fixed error in the "BIOS compatible" code for setting baud rates:
this indirectly affected locking baud rates as well
- Limited release
---- v1.81α 21 Jan 1990
- Inserted 'hooks' for an external data capture buffer and added
'reserved' function to integration for a program to be released
- Modified 'break' handling to force a fixed interval break in
transmit buffer flush, which can be switched on and off for each
port individually. the new syntax is: /G<port>[+|-]
where port is 0=COM1, 1=COM2 etc. and '+' switches this break
handling on, and '-' switches it off
- Modified (a little) the way communications interrupts are handled;
SEOI rearms 8259A at commencement of IRQ handler to ensure no loss
of interrupts is possible
- Up to 8 ports are now supported concurrently (was 4)
- Prepared for chaining of ports to the same IRQ (not supported in
this version yet!)
- Modified debug window for more concise and relevant info
- Limited test releases
---- v1.82ß 23 Jan 1990
- Finally a released beta ...
- CTS timeout now defaults to OFF, and must be enabled specifically
with /Yn (where n is in ticks). Don't use it if you aren't having
problems since it will definitely create some for you.
---- v1.83α 14 Feb 1990
- Experimental version(s) only
- /? is now the ONLY help switch; /H reserved for ...
- Added setting handshake mask ON and OFF to force or mask out
local and remote handshaking. Format of this switch is:
/H{F|N}<port>{+|-},[C|X|R]
Examples are:
/HF0+,XR Forces ON, xon/xoff handshaking for both
remote and local so that despite what the
application sets, XON/XOFF is always enabled.
/HF0-,X Switchs off forcing on xon/xoff handshaking
when XON/XOFF is received from the remote
system; this resets any switch which forced
'X' on (ie. reverses /FF0+,X).
/HN0+,C Forces CTS/RTS handshaking off on COM1.
/HN1-,CX Switches forcing both CTS/RTS and XON/XOFF
handshaking off for COM2, reversing a previous
/FN1+,CX.
This switch should ONLY be used in special circumstances, where
you wish to achieve a SPECIFIC PURPOSE.
WARNING: DO NOT USE THIS SWITCH UNLESS YOU UNDERSTAND IT AND
KNOW EXACTLY THE EFFECT YOU WISH TO ACHIEVE!!
Some examples of use are where your modem does not do true CTS/RTS
handshaking or does it incorrectly. For example, making CTS follow
carrier detect, stopping any commands being sent to the modem after
carrier loss (and the application does not provide an option to not
use CTS/RTS flow control); similarly where you use a three-wire
direct connect wire between machines without a CTS line; where
your modem cable does not support a CTS wire; where a BBS uses
block read/writes but does not enable XON/XOFF flow control to allow
^S and ^Q to control screen start and stop.
- A few bug fixes/corrections:
. Setting baud rate when FOSSIL was not initialised
. Fixed serious problem in transmit/receive block functions where
interrupts would be disabled for too long due to a missing STI
instruction in a common subroutine
. Found error in ISR which prevented disabling of CTS/RTS flow
control (CTS/RTS flow control was respected regardless)
- Fixed reboot to work correctly under DESQview/386
---- v1.84ß 07 Mar 1990
- Remote CTS timeout strategy eliminated (this was a kludge around
previously existing problems which have since been solved), so
/Y is now defunct
- Status /S switch now displays carrier watch status
- Automatically adapts boot procedure for PC-MOS/386 when detected,
reboot should also work more reliably under DESQview/386 (any
feedback appreciated)
- To maintain BNU's re-entrancy from within DOS, TM now checks that
DOS is not busy prior doing find task number calls and time
slicing (I don't think this is necessary, but not knowing for
sure I thought I'd make sure it wouldn't cause any problems)
- BNUHLP now supports status display; handshaking force on/off also
added to status in both BNUHLP and BNU.COM
- Bug fixed in .SYS version which could cause problems when BNUHLP
was run (some variables were inadvertantly being overwritten)
- Port locking/unlocking on-the-fly added to BNUHLP
- The '/' or '-' before command line arguments is now optional
(earth shattering, huh?)
- Added 'all' option to handshaking mask control switch /H, and
squashed a wee bug there in BNUHLP's version. You can now
specify something like: /HF0+,A This allows switching on/off
ALL flow control flags (XON/XOFF local, CTS/RTS local and
control remote using XON/XOFF), and is equivalent to /HF0+,CRX
but is a little easier to understand
- Additional test for receiver ready added to ISR, which will
hopefully further ensure reduction in the incidence of receive
character loss
- Up to 16 ports are now supported for concurrent use; this is
BNU's maximum port configuration anyway.
- New BNUPORT added to this package - earlier versions will not
work and are incompatible; patch table files from earlier
versions will be read by this version and automagically
converted to the new more compact format
- And especially for those who don't read release notes <grin>
the /M option is now disabled in all beta versions so that the
init message WILL be displayed with the new "THIS IS A BETA"
message. If you ask about it, you're in for some public
embarassment about not RTFM'ing! ;-)
---- v1.85α
- Optimised some ISR code for better efficiency/speed, some
further rearrangement to implement shared IRQ's
- Fixed 9600 locked baud rate (was locking at 7200)
- Implemented shared IRQ's
- Semaphore used to ensure two ports not colliding in init
function
---- v1.85ß 08 Apr 1990
- Removed some debug code (might have been causing problems)
- TM-PM revised; removed INMOS detection code, which caused
task slicing not to work (apparently MOS switches to its
internal stack on a software interrupt? Hmmm)
- Corrected two problems in port parameter locking using the
/L switch in BNUHLP
- Corrected the status display of locked baud rates and port
parameters.
---- v1.86ß 17 Apr 1990
- Removed requirement for / or - preceeding options in TM, to
be consistent with BNU and BNUHLP
- Significant improvement to ISR; BNU should now work *much*
better in 'tough' conditions; ie. high baud rate and multi
line.
- Fixed a flow control bug which caused the transmitter to stop
during a file transfer whenever the receiver's buffer became
full (usually restarted by timeout).
- Modified the way the transmitter works, completely removing
the requirement for disabling interrupts when working with
16550 FIFO's.
---- v1.87α 19 Apr 1990
- More revisions to BNU's interrupt service; some fairly extreme
optimisations added, some "debugging" options eliminated as a
result (the debug window no longer logs modem status changes)
- BNU now clears line status errors on each status call (solves
the problem with Opus/framing errors).
- Fixed a problem in "transmit flush" which caused apparent
'lockups' with some UART configurations
---- v1.88ß 27 May 1990
- Removed shared-IRQ support :-(
- Fixed bug in "lock baud rate" switch (/L) in BNUHLP which
set incorrect bits
- Reinstated modem error reporting support in diags window
- 'Snoop' added to BNU package for aiding in diagnosis and allowing
a 'snapshot'
~~~~~~~~~~~~~~~~~~~~~~~~~~
ADDITIONAL NOTES: BNUHLP
This is a generic BNU utility, which may be used with either the .COM
(memory resident TSR) or the .SYS (device driver) version of BNU.
BNUHLP contains functions found only in the TSR version previously, and
some of the more often used functions of BNU.COM/.SYS are included in
BNUHLP to make switching of drivers easier without having to modify your
batch files every time you change.
Only a subset of the commands available with BNU.COM are provided.
Those functions which are the same as BNU.COM are also identical in
syntax, rules and usage.
Following is the list of commands available in BNUHLP:
/C reCapture INT 14H vector (required under DESQview etc.)
usage: /C
/Q release INT 14H vector (removes BNU from the 14h chain)
usage: /Q
/B reBoot system immediately (/B0 is cold boot, /B1 is warm)
usage: /B[0|1] (boom!)
/F (toggle) Fast screen write via ANSI driver
usage: /F[+|-]
/M (toggle) init Message display
usage: /M[+|-]
/I Initialise/deinitialise driver on port, or all ports
usage: /I<port>[+|-]
-or- /I* (deinits all)
/? displays the Help screen
usage: /?
/W enable/disable carrier Watchdog on a port
usage: /W<port>[+|-][,ticks]
(see above for optional [,ticks] parameter)
/O Opus!Com/X00 cOmpatibility mode (fn 0x1c is max)
usage: /O[+|-]
/Z sets 16550 FIFO buffering (as per .COm version)
usage: /Z (use default buffering per hardware)
-or- /Z<level> (see 1.70's docs with exception above)
/X XON/XOFF protocol select, toggles IXANY support
usage: /X[+|-]
/S display driver Status
usage: /S
/H force on/off given handshaking protocol
usage: /H[F|N]<port>,[X|C|R|A] (see notes above)
/L Lock/unlock port speed and/or parameters
usage: /L<port>:<baud>[,<parms> (see docs v1.70)
NOTES: Task Manager
This is a driver which interfaces to BNU to assist in running under
multitasking software. If used, it MUST BE RUN IMMEDIATELY AFTER
LOADING BNU (or in the case of BNU.SYS, shortly after in AUTOEXEC.BAT).
TM should _NEVER_ be loaded in a DESQview window if BNU is loaded prior
to DV. This is almost DEFINITELY cause a system lockup - sooner of
later... Since BNU 'hooks into' TM, it is not separately unloadable.
If BNU.COM is removed from memory, then memory allocated and used by
TM will also be freed.
TM can use up to one command line parameter. This indicates to the
driver it's basic timeout period. The timout period (expressed in
clock ticks) is by default is around half a second (9 ticks), which
is farily conservative. I've found best results at 4-5.
This release includes both TM for DESQview (TM-DV) and PC-MOS/386 (TM-PM).
HOW IT WORKS: BNU has some "idle detect" hooks. Whenever the
communications driver is called, it examines the function being
called. Typically, a program calls BNU and "polls" when it's idle
(which is a waste of cycles in most cases, but an application does
have to keep an eye on things...), for port status, receive buffer
status, or sometimes the transmit buffer is full, and no matter how
hard the application tries, it cannot place any more characters there.
So, for these calls, BNU calls an "I think I'm being polled" hook in
TM. In turn, TM examines how long this has been occuring, and if it
occurs for greater than the number of ticks specified (or 9 if no
command-line switch was used), it starts releasing time slices on
all subsequent "poll" calls. BNU is also smart enough to detect
real activity occuring, and so terminates this arrangement
immediately things start to happen - the result is that by just
calling FOSSIL, the application automatically gives up time slices
when it is truely idle.
For those using the diagnostics window, there is a field labelled "TMPoll",
which indicates the current state of TM. On a single tasking machine with
TM either not loaded or inactive (multitasker is not loaded), this field
will remain 0000. When active, 0000 indicates that there's FOSSIL activity
occuring, FFFF indicates a poll timeout (TM is time slicing!), and values
in between denote that some calls are "polling", but not enough to trigger
the idle detect switch on.
Each tick is approx 1/18th of a second. The /T parameter takes arguments
expressed in ticks. The default is 9 (half a second), and as I've already
said - 4 or 5 seems to work fine.